package code.c02_list.clinkList;

import code.c02_list.clinkList.CLinkListClass;
import code.c02_list.clinkList.LinkNode;

/**
 * @author thinkpad - 83start
 * @version v1.0
 * @create 2022/9/26 18:07
 * @package code.c02_list.classwork.examples
 * @description 有一个整数循环单链表L ，设计一个算法求值为 x 的结点的个数。
 *
 * 解法：用 p 遍历整个循环单链表 L 的数据结点，用 cnt 累计 data 成员值为x 的结点的个数，最后返回 cnt.
 */

public class Exam_2_20 {
    public static int count(CLinkListClass<Integer> L,Integer x){
        int cnt = 0;
       LinkNode<Integer>p =  L.head.next;

        System.out.println(L.toString());
       // 循环链表判断是否结束的条件
       while (p!=L.head){
           if (p.data.equals(x)){
               cnt ++;
           }
           p = p.next;
       }

       return cnt;
    }

    public static void main(String[] args) {
        Integer[] a = {1,2,3,4,45,56,4,34,3,3,2,2,2,2};
        CLinkListClass<Integer> L = new CLinkListClass<>();
        L.CreateListR(a);

        int count = count(L, 4);
        System.out.println(count);
    }
}
